<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 添加
        let arr = [1, 2, 3, 4];
        // arr.push(44); // 尾插
        // arr.unshift(11); // 头插

        // console.log(arr);
        
        // // 删除
        // console.log(arr.pop()); // 尾删
        // console.log(arr.shift()); // 头删
        // console.log(arr);
        
        // // 从下标1开始 删除2个元素 添加 44 55
        // console.log(arr.splice(1, 2, 44, 55));
        // console.log(arr);
        
        // // 包含
        // console.log(arr.includes(1));
        // console.log(arr.includes(100));
        

        // ---------------------------
        // forEach
        // const ret = arr.forEach((v, i, arr) => {
        //     console.log(v, i, arr);
        // })
        // console.log(ret); // undefined 无返回
        
        const arr3 = [1, 3, 5];
        arr3.forEach((v, i, arr) => {
            arr3[i] += 2;
            console.log(arr); // 由此可见 arr 就是 arr3
        })

        // ------------------
        // filter
        // const ret = arr.filter(v => v % 2 === 0); // 过滤出偶数
        // const ret2 = arr.filter(v => v > 2); // 过滤出大于2 的数
        // console.log(ret);
        // console.log(ret2);
        // console.log(arr);
        

        // ------------ arr = [1, 2, 3, 4]
        // map 使用的前提条件 1. 新数组与原来的数组长度相同 2. 新数组的元素与旧数组的元素有一一对应的关系
        // 获得 [10, 20, 30, 40] 
        // const newArr = arr.map(v => v * 10);
        // console.log(newArr);
        
        // 获得 [{0: 10}, {1: 20}, {2: 30}, {3: 40}] 参数写 index 而不是 i 是因为这样创建对象可以简写
        // const newArr2 = arr.map((value, index) => ({index, value}));
        // console.log(newArr2);

        // 由此可得 如果对应的没有返回值 那么相对应的地方是 undefined
        // const newArr3 = arr.map(v => {
        //     if (v != 1) return v * 10;
        // });
        // console.log(newArr3);
        

        // --------------------
        // every 如果都满足条件 返回 true 否则返回 false
        let arr2 = [10, 20, 30, 40];
        // // 查看是否全是奇数
        // let flag1 = arr2.every(v => {
        //     console.log(666);
        //     return v % 2 === 0;
        // });
        // console.log(flag1);
        
        // 查看是否全是大于10
        // let flag2 = arr2.every(v => v > 10)
        // console.log(flag2);
        

        // ------------------
        // reduce
        // arr2.reduce((prev, item, index, array) => {
        //     console.log(prev, item, index, array);
        // }, 0)
        // 求和
        // let sum = arr2.reduce((prev, cur) => prev + cur, 0); 
        // console.log(sum);
        
        // 求总个数
        // const goodList = [
        //     { id: 1, name: '篮球', num: 1},
        //     { id: 2, name: '玩具', num: 3},
        //     { id: 3, name: '书籍', num: 2},
        // ]
        // let totalCount = goodList.reduce((prev, cur) => prev + cur.num, 0)
        // console.log(totalCount);
        
    </script>
</body>
</html>